package ar.edu.utn.frre.sistop.simumem.model;

import java.util.ArrayList;
import java.util.Iterator;

public class Memoria {
	
	private ArrayList<Particion> particiones;
	private long mTamano = 0;
	private long mTamanoMayorParticion = 0;
	
	public Memoria (ArrayList<Particion> particiones) {
		this.particiones = particiones;
		determinarTamanos();
	}
	
	public Memoria (long tamano) {
		mTamano = tamano;
		mTamanoMayorParticion = tamano;
		particiones = new ArrayList<Particion>();
		agregarParticion(new Particion(0, 0, tamano));
	}
	
	private void determinarTamanos() {
		Iterator<Particion> itParticiones = particiones.iterator();
		mTamano = 0;
		while (itParticiones.hasNext()) {
			long tamanoActual = itParticiones.next().getTamano();
			if (tamanoActual > mTamanoMayorParticion) mTamanoMayorParticion = tamanoActual;
			mTamano += tamanoActual;
		}
	}
	
	public void agregarParticion(Particion particion) {
		particiones.add(particion);
		determinarTamanos();
	}

	public ArrayList<Particion> getParticiones() {
		return particiones;
	}

	public long getTamano() {
		return mTamano;
	}

	public long getTamanoMayorParticion() {
		return mTamanoMayorParticion;
	}
}
